package com.dog.basics.service.common;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dog.basics.bean.dto.admin.common.UserAddDto;
import com.dog.basics.bean.dto.admin.common.UserEditDto;
import com.dog.basics.bean.dto.admin.common.UserFromDto;
import com.dog.basics.bean.dto.api.common.*;
import com.dog.basics.bean.model.common.DogUser;
import com.dog.basics.bean.vo.admin.common.MiniUserInfoUUidVo;
import com.dog.basics.bean.vo.admin.common.MiniUserInfoVo;
import com.dog.basics.bean.vo.admin.common.PcAllUserPageVo;
import com.dog.basics.bean.vo.admin.common.PcUserPageVo;
import com.dog.basics.bean.vo.api.common.ApiUserEditDto;
import com.dog.basics.common.util.PageParam;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;


/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author guoy
 * @since 2020-03-23
 */
public interface IDogUserService extends IService<DogUser> {

    /**
     * @Description: 分页APP用户列表(pc)
     * @Param: name
     * @return: IPage<CompanyPageVo>
     * @Author: wph
     * @Date: 2020/3/27 0027
     */
    IPage<PcUserPageVo> getPageList(PageParam page, UserFromDto obj);

    /**
     * @Description: 全部用户列表
     * @Param: status
     * @return: IPage<CompanyPageVo>
     * @Author: wph
     * @Date: 2020/3/27 0027
     */
    List<PcAllUserPageVo> getAllPageList();

    /***
     * 添加用户信息 - (系统)
     * @param dto
     * @return
     */
    Boolean addUser(UserAddDto dto);

    /***
     * 修改用户信息 - (系统)
     * @param dto
     * @return
     */
    Boolean editUser(UserEditDto dto);

    /**
     * 手机号登陆 发送验证码
     *
     * @param phone
     * @return guonh 2019年12月21日
     */
    Boolean sendPhoneSms(@RequestParam String phone);

    /**
     * 忘记密码登陆 发送验证码
     *
     * @param phone
     * @return guonh 2019年12月21日
     */
    Boolean sendforgetSms(@RequestParam String phone);

    /**
     * 绑定手机号 发送验证码
     *
     * @param phone
     * @return guonh 2019年12月21日
     */
    Boolean sendBdSms(@RequestParam String phone);

    /**
     * 手机号注册
     *
     * @param phone
     * @return guonh 2019年12月21日
     */
    Boolean sendRegisterSms(@RequestParam String phone);

    /**
     * 修改手机号 发送验证码
     *
     * @param phone
     * @return guonh 2019年12月21日
     */
    Boolean editPhoneSms(@RequestParam String phone);

    /**
     * 修改邮箱 发送验证码
     *
     * @param email
     * @return guonh 2019年12月21日
     */
    Boolean editEmailSms(@RequestParam String email);

    /**
     * 注册
     *
     * @param userRegisterDto
     * @return
     */
    Boolean register(UserRegisterDto userRegisterDto);

    /**
     * 用户注册(手机号或者email)
     *
     * @param userRegisterDto
     * @return
     */
    Boolean registerOrEmail(UserRegisterDto userRegisterDto);

    /**
     * 修改手机号
     *
     * @param dto
     * @return
     */
    Boolean updateMobile(UpdateMobileDto dto);

    /**
     * 修改邮箱
     *
     * @param dto
     * @return
     */
    Boolean updateEmail(UpdateEmailDto dto);

    /**
     * 修改密码和忘记密码
     *
     * @param obj
     * @return
     */
    Boolean forgetPassword(UserRegisterDto obj);

    /**
     * 绑定手机号
     *
     * @param bdUserDto
     * @return
     */
    Boolean bdUser(BdUserDto bdUserDto);

    /**
     * Api修改用户信息
     *
     * @param
     * @return
     */
    Boolean editInfo(ApiUserEditDto obj);

    /**
     * @Description: 启用冻结用户
     * @Param: Boolean
     * @return: Boolean
     * @Author: wph
     * @Date: 2020/4/9  0027
     */
    Boolean nouse(Long id);

    /**
     * @Description: 重置密码
     * @Param: Boolean
     * @return: Boolean
     * @Author: wph
     * @Date: 2020/4/9  0027
     */
    Boolean editResetPassword(Long id);

    /**
     * @Description: 开启关闭消息提醒
     * @Param: Boolean
     * @return: Boolean
     * @Author: wph
     * @Date: 2020/4/9  0027
     */
    Boolean userMessage(Long id);

    /**
     * 修改密码
     *
     * @param passwordDto
     * @return
     */
    Boolean editPassword(PasswordDto passwordDto);

    /**
     * @Description: 修改支付密码
     * @Param: oldpassword, password
     * @return: Boolean
     * @Author: wph
     * @Date: 2020/3/27 0027
     */
    Boolean editPayPassword(PayPasswordDto obj);

    /**
     * 获取微信手机号 （小程序）
     *
     * @param dto
     * @return guonh 2020年3月6日
     */
    Boolean getWxPhone(WxPhoneDto dto);
    /**
     * 获取商城微信手机号
     * @param dto
     * @return
     *  guonh 2020年3月6日
     */
    Boolean wxShopPhone(WxPhoneDto dto);
    /**
     * 获取微信uuid
     * @param dto
     * @return
     *  guonh 2020年3月6日
     */
    MiniUserInfoUUidVo gewxUuId(WxPhoneDto dto);
    /**
     * 获取微信uuid 商城
     * @param dto
     * @return
     *  guonh 2020年3月6日
     */
    MiniUserInfoUUidVo gewxShopUuId(WxPhoneDto dto);
}
